import java.math.*;
import java.util.ArrayList;

public class EulerProblem3 {
//    boolean isItPrime(long possiblePrimeNumber){
//        for(int i=2; i<=Math.sqrt(possiblePrimeNumber);i++)
//        {
//            System.out.println("i " + i +"pos"+ possiblePrimeNumber);
//            if(possiblePrimeNumber%i==0){
//                return false;
//            }
//        }
//        return true;
//    }

         long largestPrimeFactorFinder(long compositeNumber){
                long i;
                for ( i = 2 ; i <=compositeNumber ; i++){
                     while (compositeNumber % i == 0){
//                          System.out.println("compositeNumber"+compositeNumber+"i"+i);
                            compositeNumber = compositeNumber/i;
//                         System.out.println("compositeNumber"+compositeNumber+"i"+i);
                     }
//                    return i;
                }
         return --i;
         }

    public static void main(String arg[]){
        EulerProblem3 e = new EulerProblem3();
//        System.out.println(e.isItPrime(10));
        System.out.println(e.largestPrimeFactorFinder(600851475143l));
    }
            /*public static void main(String[] args) {
		       long N = 600851475143l;

		    }*/


}
